Compra inicio, Vende fin

Ejemplo con Elektra (ELEKTRA.MX), compra en una fecha específica y vende al final


In [4]:
%matplotlib inline
import pandas as pd
import pandas.io.data
import numpy as np
import pytz
from datetime import datetime
import zipline as zp
import matplotlib.pyplot as plt
import matplotlib as mpl

# Info de compra
num_acciones = 1
dia_compra, mes_compra, anio_compra = 1, 3, 2010
dia_venta, mes_venta, anio_venta = 1, 3, 2013

# Datos para Elektra (datetime en formato AAAA/MM/DD)
start = datetime(anio_compra, mes_compra, dia_compra, 0, 0, 0, 0, pytz.utc)
end = datetime(anio_venta, mes_venta, dia_venta + 5, 0, 0, 0, 0, pytz.utc)
data = zp.utils.factory.load_from_yahoo(stocks=['ELEKTRA.MX'], indexes={}, start=start,
                                        end=end, adjusted=False)

data.plot()


ELEKTRA.MX
Out[4]:
<matplotlib.axes.AxesSubplot at 0xa9c959ac>

Estrategia de trading, simplemente intenta comprar y vender el número de acciones en las fechas


In [8]:
class BuyLektra(zp.TradingAlgorithm):
    def handle_data(self, data):
        fecha = data['ELEKTRA.MX'].dt
        precio = data['ELEKTRA.MX'].price
        # Buy primo, buy
        if(fecha.day == dia_compra and fecha.month == mes_compra and fecha.year == anio_compra):
            self.order('ELEKTRA.MX', num_acciones)
        # Sell primo, sell
        elif(fecha.day == dia_venta and fecha.month == mes_venta and fecha.year == anio_venta):
            self.order('ELEKTRA.MX', -num_acciones)

algo = BuyLektra()
perf = algo.run(data)

perf['portfolio_value'].plot()
print perf['portfolio_value']


[2014-08-15 18:00] INFO: Performance: Simulated 760 trading days out of 760.
[2014-08-15 18:00] INFO: Performance: first open: 2010-03-01 14:31:00+00:00
[2014-08-15 18:00] INFO: Performance: last close: 2013-03-06 21:00:00+00:00
2010-03-01 21:00:00    100000.000000
2010-03-02 21:00:00     99999.969932
2010-03-03 21:00:00     99995.149932
2010-03-04 21:00:00     99987.839932
2010-03-05 21:00:00     99984.369932
2010-03-08 21:00:00     99987.179932
2010-03-09 21:00:00     99978.349932
2010-03-10 21:00:00     99972.189932
2010-03-11 21:00:00     99975.699932
2010-03-12 21:00:00     99967.279932
2010-03-15 20:00:00     99971.619932
2010-03-16 20:00:00     99972.139932
2010-03-17 20:00:00     99990.369932
2010-03-18 20:00:00     99982.379932
2010-03-19 20:00:00     99974.749932
...
2013-02-13 21:00:00    99901.159932
2013-02-14 21:00:00    99907.239932
2013-02-15 21:00:00    99913.439932
2013-02-19 21:00:00    99921.009932
2013-02-20 21:00:00    99916.999932
2013-02-21 21:00:00    99907.459932
2013-02-22 21:00:00    99843.529932
2013-02-25 21:00:00    99834.999932
2013-02-26 21:00:00    99828.599932
2013-02-27 21:00:00    99851.149932
2013-02-28 21:00:00    99852.209932
2013-03-01 21:00:00    99844.179932
2013-03-04 21:00:00    99845.349880
2013-03-05 21:00:00    99845.349880
2013-03-06 21:00:00    99845.349880
Name: portfolio_value, Length: 760

Compra inicio, Vende fin (muchas emisoras)

Ejemplo con Elektra (ELEKTRA.MX), compra en una fecha específica y vende al final


In [ ]: